package cn.hicard.risk.vo.antimoney;

import java.lang.reflect.Field;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class Xml {
		
	public Element toXmlNode(){		
		Document doc = DocumentHelper.createDocument();
		
		Class clz = getClass();
		
		Element elm = doc.addElement(clz.getSimpleName());
		
		Field[] fields = clz.getFields();

		for (Field field : fields) {			
			try {
				// 如果字段是继承自本类的，则直接添加Element
				Object obj = field.get(this);
				if(obj instanceof Xml){
					elm.add(((Xml)obj).toXmlNode());
				} 
				// 如果是集合就遍历
				else if(obj instanceof List){
					// 创建集合结点
					Element els = elm.addElement(field.getName());
									
					List list = (List)obj;
					for (Object item : list) {
						if(item instanceof Xml){
							els.add(((Xml)item).toXmlNode());
						}
					}
					
				}
				// 普通类型(String,int...)的就拿值 // 如果是序号seqno就赋属性(约定是这样)
				else {
					String text = "";
					if(obj != null){
						text = obj.toString();
					}
					if("seqno".equals(field.getName())){
						elm.addAttribute("seqno", text);
					}else{
						elm.addElement(field.getName()).setText(text);						
					}					
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}			 		
		}
		
		return elm;
	}
}
